/* 给定一个整数数组和一个目标值，找出数组中和为目标值的两个数的位置.
例如：nums = [2,7,10,12] target = 9 则返回[0,1]
*/

/* 时间复杂度为：n */
function find(nums, target) {
  let json = {};
  for (let i = 0; i < nums.length; i++) {
    let n1 = nums[i];
    let n2 = target - n1;
    if (json[n2] !== undefined) {
      return [json[n2], i];
    } else {
      json[n1] = i;
    }
  }

  return null;
}

let nums = [2, 7, 10, 12];
let target = 9;
console.log(find(nums, target));

/*
以下算法时间复杂度为：n*n, 不如上面的算法效率高，所以不推荐这么写。
*/
// function find1(nums, target) {
//   for (let i = 0; i < nums.length; i++) {
//     for (let j = 1; j < nums.length; j++) {
//       if (nums[i] + nums[j] == target) {
//         return [i, j];
//       }
//     }
//   }
// }

// let nums = [2, 7, 10, 12];
// let target = 9;
// console.log(find1(nums, target));
